在之前 Day 5 有說到網際網路的路由處理與交換原則
但大家有沒有想過,不同 AS 之間是怎麼彼此交換路由的呢?
在 Day 5 的講解中,只有說到 AS 與 AS 之間會彼此傳入或傳出路由
那具體來說是怎麼做到的呢?
主要是透過 BGP 這個路由協定來做交換的
BGP,全名 Border Gateway Protocol
目前主要廣泛應用的版本為 BGP-4 (RFC 4271)
也是目前於網際網路上多數路由器使用的 EGP (Exterior Gateway Protocol) 協定,其佔比多於 99.9%
與其他路由協定不同的地方在於,BGP 是建構在 TCP 之上的
若有讀過大學計算機網路概論的朋友,應該要知道 TCP 可以確保訊息有被傳輸對端正確的接收到,提供資料的可靠與穩定性
而 BGP 預設使用的 TCP 連接埠為 179
網際網路路由幾乎是每秒都在變動且十分大量的
所以選擇一個穩定且高效的路由協定是十分重要的
對比於其他路由協定來看,BGP 使用的是差異更新機制
也就是只傳送更新的部分,更類似一般在寫程式所使用的 diff patch
鑑於目前的全球網際網路路由表來看,目前 IPv4 全表已突破 800,000 筆
(source: https://bgp.potaroo.net/)
若還在使用傳統廣播路由表的方式,將會製造出龐大的流量,且在路由收斂速度上會有大幅度的下降
路由協定根據運作原理大致分為下列三種
鏈路狀態路由協定需要獲得區域或是全域網路的連結拓樸,這在網際網路上因設備總體數量太多,基本上來說是不可行的
而距離向量路由協定需要計算每條路的耗損,需要消耗大量資源,且採廣播機制所以收斂速度較為緩慢,在多跳情況下須消耗大量時間
故 BGP 採用的是路徑向量路由的方式,透過路徑所經過的 AS 來做選擇,讓網路管理人員有更多空間可以根據安全性與商業性策略的方式來調整路由
首先,當一台路由器從 BGP 這個路由協定收到新的路由時
會把這些路由存進一張總表內(Adj-RIBs-In)
然後刪去一些無法到達的路由後,根據下列指標選擇出較好的路由(Best Path)
並放入另一張表中供轉送封包使用(Loc-RIB)
Priority | Attribute |
---|---|
1 | Weight |
2 | Local Preference |
3 | Originate |
4 | AS path length |
5 | Origin code |
6 | MED |
7 | eBGP path over iBGP path |
8 | Shortest IGP path to BGP next hop |
9 | Oldest path |
10 | Router ID |
11 | Neighbor IP address |
最後,再將路由表(Loc-RIB)中需傳出給其他 AS 的部分傳出
通常根據 Day 5 所述的路由政策
雖然上方用了許多不同的指標來決定 Best Path,但在許多小型的 AS 中,基本只看 AS Path 的長度而已
AS Path 也就是這個路由會經過哪些 AS
舉例來說
這時候 AS 3 宣吿 1.2.3.0/24 出去
表示 1.2.3.0/24 這段 IP 的使用權在 AS 3 上
則 AS 1 收到的 BGP 路由宣告則是
1.2.3.0/24 Via [AS 2, AS 3]
表示如果要到達 1.2.3.0/24 時,需經過 AS 2,最終到達 AS 3
今天我們認識到了一些 BGP 路由的基本概念
而明天我們將會從範例來看 BGP 這個協定所傳出的詳細封包內容
這個連假比了場黑客松,時間有點小爆炸,所以這幾天文章都較為簡短
還請見諒 QQ